perm filename DIMEN.RLS[225,JMC] blob sn#005363 filedate 1971-02-03 generic text, type T, neo UTF8
00050	OFF ECHO;
00100	COMMENT  dim cl,  where  cl  is a partition, is the
00200	dimension of the representation of the symmetric group corresponding
00300	to that partitiion.  It is computed 
00400	as the number of standard tableaus of the shape corresponding
00500	to the partition.;
00600	
00700	COMMENT  First, we need our old friend  rev1;
00800	
00900	REV1(U,V) ← IF NULL U THEN V ELSE REV1(CDR U,CAR U . V);
01000	
01100	DIM CL ←
01110		IF NULL CL THEN 0
01120		ELSE IF NULL CDR CL AND (CAAR CL = 1 OR CADAR CL = 1) THEN 1
01130		ELSE DIMA(CL,NIL);
01200	
01300	DIMA(CL,U) ←
01400		IF NULL CL THEN 0
01500		ELSE IF NULL CDR CL THEN
01600			(IF CAAR CL = 1 THEN
01700				(IF CADAR CL = 1 THEN DIM REVERSE U
01800				ELSE DIM REV1(U,LIST LIST(1, CADAR CL - 1)))
01850			ELSE IF CADAR CL = 1 THEN
01875				DIM REV1(U,LIST LIST(CAAR CL - 1,1))
01900			ELSE DIM REV1(U,LIST(LIST(CAAR CL - 1,CADAR CL),
02000						LIST(1,CADAR CL - 1))))
02100		ELSE DIMA(CDR CL,CAR CL . U) +
02200			(IF CAAR CL = 1 THEN
02300				(IF CADAR CL = CADADR CL + 1 THEN
02400					DIM REV1(U,LIST(CAADR CL + 1,
02500							CADADR CL) . CDDR CL)
02600				ELSE DIM REV1(U,LIST(1,CADAR CL - 1) . CDR CL))
02700			ELSE IF CADAR CL = CADADR CL + 1 THEN
02800				DIM REV1(U,LIST(CAAR CL - 1,CADAR CL) .
02900					(LIST(CAADR CL + 1,CADADR CL) . CDDR CL))
03000			ELSE DIM REV1(U,LIST(CAAR CL - 1,CADAR CL) .
03100					(LIST(1,CADAR CL - 1) . CDR CL)));
03200	
03300	COMMENT  The next functions find the conjugate of a partition.;
03400	
03500	CONJ CL ← IF NULL CL THEN NIL ELSE CONJA(CONJB(1,CL),1,2,CL);
03600	
03700	CONJA(L,K,M,CL) ←
03800		(LAMBDA Z; IF Z=L THEN CONJA(L,K+1,M+1,CL)
03900			ELSE IF Z=0 THEN LIST LIST(L,K)
04000			ELSE LIST(K,L) . CONJA(Z,1,M+1,CL))
04100		CONJB(M,CL);
04200	
04300	CONJB(K,CL) ←
04350		IF NULL CL THEN 0
04400		ELSE IF CADAR CL < K THEN 0
04500		ELSE CAAR CL + CONJB(K,CDR CL);